package com.tg.mybatis.mattest;

import com.tg.base.concurrent.ThreadSleep;
import com.tg.mybatis.LotteryActivity;
import com.tg.mybatis.MybatisBase;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.InputStream;
import java.util.List;
import java.util.concurrent.TimeUnit;

public class UserMainTask {
    public static void main(String[] args) {

        //mybatis的配置文件
        String resource = "conf.xml";
        //使用类加载器加载mybatis的配置文件（它也加载关联的映射文件）
        InputStream is = MybatisBase.class.getClassLoader().getResourceAsStream(resource);
        //构建sqlSession的工厂
        SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is);
        //使用MyBatis提供的Resources类加载mybatis的配置文件（它也加载关联的映射文件）
        //Reader reader = Resources.getResourceAsReader(resource);
        //构建sqlSession的工厂
        //SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
        //创建能执行映射文件中sql的sqlSession
        SqlSession session = sessionFactory.openSession();

        /**
         * 映射sql的标识字符串，
         * com.tg.mybatis.mapping.lotteryMapper是lotteryMapper.xml文件中mapper标签的namespace属性的值，
         * getUser是select标签的id属性值，通过select标签的id属性值就可以找到要执行的SQL
         */
        String statement = "com.tg.mybatis.mapping.userMapper.qryAll";//映射sql的标识字符串
        //执行查询返回一个唯一user对象的sql
        List<User> list = session.selectList(statement);

        ThreadSleep.invoke(TimeUnit.MINUTES, 10);

        for (User user : list) {
            System.out.println("user = " + user);
        }
    }
}

